﻿using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
namespace BaoVeBienCuong.SelectMap
{
    public class Thanh
    {
        private bool isSelected;//Kiểm tra thành đang được chọn
        private int index;//thứ tự thành trong hệ thống
        private bool isOpenClock;//thành đã được mở khóa hay chưa ?
        private string Name;//tên thành
        private string Notify;//thông báo khi chưa mở khóa thành
        private int Star;//số sao đã vượt qua thành
        private Vector2 position;//vị trí thành trong map
        private Vector2 size;//kích thước ảnh của thành
        private Texture2D image;//ảnh của thành
        private Texture2D imageStar;//ảnh của sao

        public Thanh()
        {
            Notify = "";
            index = 0;
            isOpenClock = false;
            Name = "";
            Star = 0;
            position = new Vector2(0, 0);
            size = new Vector2(121, 110);
        }
        public void setIndex(int i)
        {
            index = i;
            switch (i)
            {
                case 0:
                    {
                        Notify = "";
                        position = new Vector2(150, 50);
                        Name = "Cổ Loa Thành";
                        break;
                    }
                case 1:
                    {
                        Notify = "Phá màn Cổ Loa Thành trước";
                        position = new Vector2(220, 210);
                        Name = "Sông Hồng";
                        break;
                    }
                case 2:
                    {
                        Notify = "Phá màn Sông Hồng trước";
                        position = new Vector2(160, 500);
                        Name = "Thành Hoa Lư";
                        break;
                    }
                case 3:
                    {
                        Notify = "Phá màn Thành Hoa Lư trước";
                        position = new Vector2(420, 470);
                        Name = "Tam Điệp";
                        break;
                    }
                case 4:
                    {
                        Notify = "Phá màn Tam Điệp trước";
                        position = new Vector2(430, 240);
                        Name = "Điện Thái Hòa";
                        break;
                    }
                case 5:
                    {
                        Notify = "Phá màn Diện Thái Hòa trước";
                        position = new Vector2(750, 180);
                        Name = "Đường Lâm";
                        break;
                    }
                case 6:
                    {
                        Notify = "Phá màn Đường Lâm trước";
                        position = new Vector2(680, 40);
                        Name = "Phong Châu";
                        break;
                    }
                case 7:
                    {
                        Notify = "Phá màn Phong Châu trước";
                        position = new Vector2(1000, 50);
                        Name = "Tiêu Du";
                        break;
                    }
                case 8:
                    {
                        Notify = "Phá màn Tiêu Du trước";
                        position = new Vector2(600, 400);
                        Name = "Bố Hải Khẩu";
                        break;
                    }
                case 9:
                    {
                        Notify = "Phá màn Bố Hải Khẩu trước";
                        position = new Vector2(920, 250);
                        Name = "Chi Lăng";
                        break;
                    }
                case 10:
                    {
                        Notify = "Phá màn Chi Lăng trước";
                        position = new Vector2(860, 550);
                        Name = "Đỗ Động Giang";
                        break;
                    }
                default:
                    {
                        Notify = "Phá màn Đỗ Động Giang trước";
                        position = new Vector2(1000, 430);
                        Name = "Thăng Long Thành";
                        break;
                    }
            }
        }
        public void Load(ContentManager content)
        {
            image = content.Load<Texture2D>("images/selectMap/castle");
            imageStar = content.Load<Texture2D>("images/selectMap/level_star");
        }
        public void Draw(SpriteBatch sprite, SpriteFont font)
        {
            if (isOpenClock)
            {
                if (isSelected)
                {

                    sprite.Draw(image, position + SelectMapAndStore.DoLech, new Rectangle(121, 0, 121, 110),
                                                Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
                }
                else
                {

                    sprite.Draw(image, position + SelectMapAndStore.DoLech, new Rectangle(0, 0, 121, 110),
                                                Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
                }
            }
            else
            {
                sprite.Draw(image, position + SelectMapAndStore.DoLech, new Rectangle(242, 0, 121, 110),
                                            Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
            }
            sprite.DrawString(font, Name, position + SelectMapAndStore.DoLech + new Vector2(0, size.Y), Color.White);
            for (int i = 0; i < 4; i++)
            {
                sprite.Draw(imageStar, position + SelectMapAndStore.DoLech + new Vector2(i * 32, -32), new Rectangle(i < Star ? 0 : 32, 0, 32, 32),
                                            Color.White, 0, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
            }
        }
        public void setValue(bool isOpen, int star)
        {
            isOpenClock = isOpen;
            Star = star;
        }
        public bool isSelect(Vector2 posi)
        {
            isSelected = false;
            if (posi.X >= position.X && posi.X <= (position.X + size.X) && posi.Y >= position.Y && posi.Y <= (position.Y + size.Y))
            {
                isSelected = true;
                return true;
            }
            else
            {
                return false;
            }
        }
        public void setIsSelected(bool t)
        {
            isSelected = t;
        }
        public bool isOpen()
        {
            return isOpenClock;
        }
        public int getStar()
        {
            return Star;
        }
        public int getIndex()
        {
            return index;
        }
        public string getName()
        {
            return Name;
        }
        public string getNotify()
        {
            return Notify;
        }
    }
}
